import com.alibaba.fastjson.JSON;
import com.cqhilink.iot.jobstandardmanagement.facade.webservicesmodel.Service;
import com.cqhilink.iot.jobstandardmanagement.facade.webservicesmodel.UasOrgExt;
import com.cqhilink.iot.jobstandardmanagement.facade.webservicesmodel.UasUser;
import com.cqhilink.iot.jobstandardmanagement.facade.webservicesmodel.UasUserExt;
import com.cqhilink.iot.jobstandardmanagement.services.webservice.util.SystemWebServicesStub;
//import org.apache.axiom.om.OMAbstractFactory;
//import org.apache.axiom.om.OMElement;
//import org.apache.axiom.om.OMFactory;
//import org.apache.axiom.om.OMNamespace;
//import org.apache.axis2.addressing.EndpointReference;
//import org.apache.axis2.client.Options;
//import org.apache.axis2.client.ServiceClient;
//import org.apache.axis2.rpc.client.RPCServiceClient;
import org.junit.Test;

/**
 * @Author 卢曼成
 * @Description webservice测试
 * @Create 2017-02-05 15:38
 */
public class AxisUtil {
//	@Test
//	public void aaa(){
//		UasUser e = new UasUser();
//		List<UasUser> list = new ArrayList<UasUser>();
//		e.setUserId("1");
//		e.setUserName("张麻子");
//		e.setLoginId("a123456");
//		e.setPassword("123123");
//		e.setStatus("0");
//		e.setBsflag("");
//		e.setLanguage("");
//		e.setSkinName("");
//		e.setDomainType("");
//		list.add(e);
//		e = new UasUser();
//		e.setUserId("2");
//		e.setUserName("李麻子");
//		e.setLoginId("a1234567");
//		e.setPassword("1231234");
//		e.setStatus("0");
//		e.setBsflag("");
//		e.setLanguage("");
//		e.setSkinName("");
//		e.setDomainType("");
//		list.add(e);
//		System.out.println(JSON.toJSON(list));
//
//		UasUserExt uue = new UasUserExt();
//		List<UasUserExt> uuelist = new ArrayList<UasUserExt>();
//		uue.setUserId("1");
//		uue.setSex("1");
//		uue.setUserType("0");
//		uue.setEmail("1111@qq.com");
//		uue.setLastLoginTime(null);
//		uue.setThisLoginTime(null);
//		uue.setLoginIp("192.168.1.33");
//		uue.setMemo("阿斯达斯的快接啊数据库大鼠的");
//		Date date = new Date();
//		uue.setCreateDate(date);
//		uue.setCreator("1");
//		uue.setModifyDate(date);
//		uue.setModifier("1");
//		uuelist.add(uue);
//
//		uue = new UasUserExt();
//		uue.setUserId("2");
//		uue.setSex("2");
//		uue.setUserType("0");
//		uue.setEmail("2222@qq.com");
//		uue.setLastLoginTime(null);
//		uue.setThisLoginTime(null);
//		uue.setLoginIp("192.168.1.35");
//		uue.setMemo("区委区维权网");
//		uue.setCreateDate(date);
//		uue.setCreator("2");
//		uue.setModifyDate(date);
//		uue.setModifier("3");
//		uuelist.add(uue);
//		uue = new UasUserExt();
//		uue.setUserId("3");
//		uue.setSex("1");
//		uue.setUserType("0");
//		uue.setEmail("qweqwewqe@qq.com");
//		uue.setLastLoginTime(null);
//		uue.setThisLoginTime(null);
//		uue.setLoginIp("192.168.1.111");
//		uue.setMemo("其egg郭富城v");
//		uue.setCreateDate(date);
//		uue.setCreator("333");
//		uue.setModifyDate(date);
//		uue.setModifier("444");
//		uuelist.add(uue);
//		System.out.println(JSON.toJSON(uuelist));
//	}


    @Test
    public void axisUtilTest() throws Exception {
//		String url = "http://localhost:8080/services/HelloWorld?wsdl";
//		String method = "sayHello";
//		AxisUtil.sendService("sadasdas",  url,  method);  "spring/applicationContext.xml",

//        SystemWebServicesStub.Route r = new SystemWebServicesStub.Route();
//        r.setServiceID("03002000000002");
//        r.setSourceSysID("08004");
//        r.setSerialNO("2015051302005001000");
//        r.setServiceTime("20150513103502");
//
//        SystemWebServicesStub.Request srque = new SystemWebServicesStub.Request();
//        srque.setType("1");
////		srque.setType("2");
////		srque.setType("3");
////		srque.setType("4");
////		srque.setType("5");//没用因为我们是子系统
////		srque.setType("6");
////		srque.setType("7");//没用，因为是button我们这边自己添加
////		srque.setType("8");
////		srque.setType("9");
////		srque.setType("10");
////		srque.setType("11");
////		srque.setType("12");
//        srque.setDataIDs("828");
//        srque.setControlType("1");
//        SystemWebServicesStub.Data sd = new SystemWebServicesStub.Data();
//        sd.setRequest(srque);
//
//        SystemWebServicesStub.Service ss = new SystemWebServicesStub.Service();
//        //添加Route数据
//        ss.setRoute(r);
//        //添加Data数据
//        ss.setData(sd);
//
//        SystemWebServicesStub.InterfaceNotification si = new SystemWebServicesStub.InterfaceNotification();
//        //放入service实体类
//        si.setService(ss);
////		SystemWebServicesStub.GetJurisdiction sj = new SystemWebServicesStub.GetJurisdiction();
////		sj.setService(ss);
//        SystemWebServicesStub s = new SystemWebServicesStub();
//        System.out.println(ss.getRoute().getServiceID());
//
//        // 提交并且返回内容
////		SystemWebServicesStub.Service rs = s.getJurisdiction(sj).get_return();
//        SystemWebServicesStub.Service rs = s.interfaceNotification(si).get_return();
//        System.out.println(rs.getData().getRequest().getDataIDs());
//        System.out.println(rs.getData().getRequest().getControlType());
//        System.out.println(rs.getData().getRequest().getType());

    }

    public static String sendService(String url, String method, Service service) {
        String xml = null;
//		try {
//			Options options = new Options();
//			EndpointReference targetEPR = new EndpointReference(url);
//			options.setTo(targetEPR);
//			options.setAction(method);
//			//client
//			ServiceClient sender = new ServiceClient();
//			sender.setOptions(options);
//			javax.xml.stream.XMLStreamReader reader = BeanUtil.getPullParser(service);
//			StreamWrapper parser = new StreamWrapper(reader);
//			StAXOMBuilder stAXOMBuilder = (StAXOMBuilder) OMXMLBuilderFactory.createStAXOMBuilder(OMAbstractFactory.getOMFactory(), parser );
//
//			OMElement element = stAXOMBuilder.getDocumentElement();
//			OMElement result = sender.sendReceive(element);
//			System.out.println(element);
//		}catch (Exception e){
//			e.printStackTrace();
//		}


        try {
//            Options options = new Options();
//            EndpointReference targetEPR = new EndpointReference(url);
//            options.setTo(targetEPR);
//            options.setAction(method);
////			//client
//            ServiceClient sender = new ServiceClient();
//            sender.setOptions(options);
//
//            OMFactory factory = OMAbstractFactory.getOMFactory();
//
//
//            //第二部
//            OMNamespace bodyNM = factory.createOMNamespace("http://webservices.cqhilink.com", "");
////			OMNamespace xsd = factory.createOMNamespace("http://webservices.cqhilink.com","");
//
//
//            //Route
//            OMElement route = factory.createOMElement("route", bodyNM);
//
//            OMElement serialNO = factory.createOMElement("serialNO", bodyNM);
//            serialNO.setText("1");
//            route.addChild(serialNO);
//
//            OMElement serviceID = factory.createOMElement("serviceID", bodyNM);
//            serviceID.setText("70201000000001");
//            route.addChild(serviceID);
//
//            OMElement serviceTime = factory.createOMElement("serviceTime", bodyNM);
//            serviceTime.setText("1");
//            route.addChild(serviceTime);
//
//            OMElement sourceSysID = factory.createOMElement("sourceSysID", bodyNM);
//            sourceSysID.setText("60501");
//            route.addChild(sourceSysID);
//
//
//            OMElement route2 = factory.createOMElement("route", bodyNM);
//
//            OMElement serialNO2 = factory.createOMElement("serialNO", bodyNM);
//            serialNO2.setText("1");
//            route2.addChild(serialNO);
//
//            OMElement serviceID2 = factory.createOMElement("serviceID", bodyNM);
//            serviceID2.setText("70201000000001");
//            route2.addChild(serviceID);
//
//            OMElement serviceTime2 = factory.createOMElement("serviceTime", bodyNM);
//            serviceTime.setText("1");
//            route2.addChild(serviceTime);
//
//            OMElement sourceSysID2 = factory.createOMElement("sourceSysID", bodyNM);
//            sourceSysID2.setText("60501");
//            route2.addChild(sourceSysID);
//
//
//            //Request
//            OMElement req = factory.createOMElement("request", bodyNM);
//
//            OMElement sysID = factory.createOMElement("sysID", bodyNM);
//            sysID.setText("60501");
//            req.addChild(sysID);
//
//            OMElement type = factory.createOMElement("type", bodyNM);
//            type.setText("1");
//            req.addChild(type);
//
//            OMElement dataIDs = factory.createOMElement("dataIDs", bodyNM);
//            dataIDs.setText("828");
//            req.addChild(dataIDs);
//
//            OMElement dataType = factory.createOMElement("dataType", bodyNM);
//            dataType.setText("2");
//            req.addChild(dataType);
//            //Control
//            OMElement control = factory.createOMElement("control", bodyNM);
//            control.setText("");
//            //Data
//            OMElement data = factory.createOMElement("data", bodyNM);
//            //添加Control
//            data.addChild(control);
//            //添加Request
//            data.addChild(req);
//            //Service
//            OMElement ser = factory.createOMElement("service", bodyNM);
//            //添加route
//            ser.addChild(route);
//            ser.addChild(route2);
////			//添加data
////			ser.addChild(data);
//
//            ser.build();
//            OMElement result = sender.sendReceive(ser);
//            System.out.println(result);
//
//			OMNamespace bodyNM =  factory.createOMNamespace("http://webservices.cqhilink.com","sen");
//			OMElement methods = factory.createOMElement("send", bodyNM);
//
//			//方法里的参数1
//			OMElement destTermXML = factory.createOMElement("destTermID", bodyNM);
//			destTermXML.setText("2");
//			methods.addChild(destTermXML);
//			//方法里的参数2，下面依次类推
//			OMElement srcTermIDXML = factory.createOMElement("srcTermID", bodyNM);
//			srcTermIDXML.setText("1");
//			methods.addChild(srcTermIDXML);
//			//构建request报文
//			methods.build();
//
//			//发送报文请求，返回OMElement
//			OMElement result = sender.sendReceive(methods);
        } catch (Exception e) {
            e.printStackTrace();
            long end = System.currentTimeMillis();
        }
        return xml;
    }

    public static String sendService(String xmlStr, String url, String method) {
        String xml = null;
        try {

//            RPCServiceClient serviceClient = new RPCServiceClient();
//            Options options = serviceClient.getOptions();
//            EndpointReference targetEPR = new EndpointReference(url);
//            options.setTo(targetEPR);
//            // 在创建QName对象时，QName类的构造方法的第一个参数表示WSDL文件的命名空间名，也就是<wsdl:definitions>元素的targetNamespace属性值
//            javax.xml.namespace.QName opAddEntry = new javax.xml.namespace.QName("http://webservices.cqhilink.com", method);
//            // 参数，如果有多个，继续往后面增加即可，不用指定参数的名称
//            Object[] opAddEntryArgs = new Object[]{xmlStr};
//            // 返回参数类型，这个和axis1有点区别
//            // invokeBlocking方法有三个参数，其中第一个参数的类型是QName对象，表示要调用的方法名；
//            // 第二个参数表示要调用的WebService方法的参数值，参数类型为Object[]；
//            // 第三个参数表示WebService方法的返回值类型的Class对象，参数类型为Class[]。
//            // 当方法没有参数时，invokeBlocking方法的第二个参数值不能是null，而要使用new Object[]{}
//            // 如果被调用的WebService方法没有返回值，应使用RPCServiceClient类的invokeRobust方法，
//            // 该方法只有两个参数，它们的含义与invokeBlocking方法的前两个参数的含义相同
//            Class[] classes = new Class[]{String.class};
//            xml = (String) serviceClient.invokeBlocking(opAddEntry, opAddEntryArgs, classes)[0];
//            System.out.println(xml);


        } catch (Exception e) {
            e.printStackTrace();
            long end = System.currentTimeMillis();
        }
        return xml;
    }
}
